#include <bits/stdc++.h>
using namespace std;
#define int long long
int n,ans=0;
vector<vector<int>> v;
int dx[5]={0,0,0,-1,1};
int dy[5]={0,-1,1,0,0};
int dx1[5]={0,1,-1,1,-1};
int dy1[5]={0,1,-1,-1,1};
int dfs(int x,int y,int f,int z)
{
    int ret=1;
    int a=x+ans*dx[f],b=y+ans*dy[f];
    if(a<1||a>n||b<1||b>n||v[a][b]!=z)return ret;
    while(1)
    {
        x+=dx[f],y+=dy[f];
        int tmp=0;
        int tx=x,ty=y;
        while(tmp<=ret)
        {
            tx=x+tmp*dx1[f],ty=y+tmp*dy1[f];
            if(tx>n||tx<1||ty>n||ty<1||v[tx][ty]!=z)return ret;
            tmp++;
        }
        ret++;
    }
}
void solve()
{
    cin>>n;
    v=vector<vector<int>> (n+1,vector<int>(n+1));
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            cin>>v[i][j];
        }
    }
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            for(int k=1;k<=4;k++)
            {
                ans=max(ans,dfs(i,j,k,v[i][j]));
            }
        }
    }
    cout<<ans;
}
signed main()
{
    //ios::sync_with_stdio(false);
    //cin.tie(nullptr);
    int T=1;
    //cin>>T;
    while(T--)
    {
       solve();
    }
    return 0;
}